/* * 計算2個時間的時間差 */ 上班时间 07:20 16:00 或者 08:00 17:00 中间休息1小时 不包括法定节假日 只考虑星期天 这里 只放假星期日 星期6要上班的 命苦。。。。。。 function DateDiff() { var date1=dateFormat(Ext.getCmp("FromDate").getValue(),'Y-m-d H:i:s');//获取开始时间 这里是用的是ExtJs var date2=dateFormat(Ext.getCmp("EndDate").getValue(),'Y-m-d H:i:s');//获取结束时间 var dTotal=""; if(date1!="") { var dt1 = new Date(Date.parse(date1.replace(/-/g, '/')));//转换成日期 var dt2 = new Date(Date.parse(date2.replace(/-/g, '/')));//转换成日期格式 var m1=dt1.getMonth();//返回表示月份的数字 (0,1,2,3...11) var m2=dt2.getMonth(); var w1=dt1.getDay(); var w2=dt2.getDay();//返回表示星期的某一天的數字 var d1=dt1.getDate();//還回月份的某一天 (1...31) var d2=dt2.getDate(); var st=dt1.getHours();//時間的小時的字段 {0.....23} var et=dt2.getHours(); var min1=dt1.getMinutes(); var min2=dt2.getMinutes(); var dCount=0; var dMin=0; var dHour=0; var dWeek=0; var dMonth=0; var dt=0; try { if(m2-m1>0) { for(i=m1;i<m2;i++)//判断头尾月份总共多少天 { dt+=Check_days(i); } dCount=dt+d2-d1; } else { dCount=d2-d1;//天數差 } if(w2-w1<=0&&dCount>0)// 星期天 並且天數差大於0 { dWeek=1; } else if(dCount>7)//天數差 7天以上 { dWeek=parseInt(dCount/7); } dHour=et-st;//小時差 dMin=min2-min1; if(min1=='20') { if(min2=='20') { dMin=(dMin)/60; } else { dMin=(dMin+20)/60; } } else { dMin=dMin/60; } dTotal=(dCount-dWeek)*8+dHour+dMin; if(st<12&&et>12) { dTotal= dTotal-1;//扣除午間休息一小時 } Ext.getCmp("iTotal").setValue(dTotal); } catch (e) { return e.message; } } } // 核算某月有几天 0:1月 1:2月 2:3月。。。 这里不考虑2月有29天 也就是闰月的情况 不然太复杂 function Check_days(v) { var days=0; switch(v) { case 0 :case 2 : case 4: case 6: case 7: case 9:case 11: days=31; break; case 1: days=28; break; case 3:case 5: case 8: case 10: days=30; break; } return days; }
JavaScript 如何计算2个时间差 工作时间为8小时
最新推荐文章于 2022-08-22 10:36:12 发布